Methods and apparatus to perform torque balance control of co-shafted motors

ABSTRACT

Methods, apparatus, systems and articles of manufacture to perform torque balance control of co-shafted motors are disclosed. An example method includes calculating a first torque value based on first phase currents of a first motor that is driving a shaft connected to a control surface, and calculating a second torque value based on second phase currents of a second motor that is driving the same shaft. The example method also includes determining a first shared torque value based on the first calculated torque value and a first sharing factor, and determining a second shared torque value based on the second calculated torque value and a second sharing factor. The example method also includes determining a torque error based on the first shared torque value and the second shared torque value, and determining a first torque adjustment associated with the first motor based on the torque error.

FIELD OF THE DISCLOSURE

This disclosure relates generally to control systems and, moreparticularly, to methods and apparatus to perform torque balance controlof co-shafted motors.

BACKGROUND

Torque imbalance may occur when independent motors operate on the samecontrol surface. Motors (e.g., actuators) providing uncoordinatedamounts of torque may lead to erratic control surface behavior, damageto the control surface, higher power draw due to the need of one motorto overcome another, etc.

SUMMARY

An example method includes calculating, by executing an instruction witha processor, a first torque value based on first phase currents of afirst motor that is driving a shaft connected to a control surface, andcalculating, by executing an instruction with the processor, a secondtorque value based on second phase currents of a second motor that isdriving the same shaft. The example method also includes determining, byexecuting an instruction with the processor, a first shared torque valuebased on the first calculated torque value and a first sharing factor,and determining, by executing an instruction with the processor, asecond shared torque value based on the second calculated torque valueand a second sharing factor. The example method also includesdetermining, by executing an instruction with the processor, a torqueerror based on the first shared torque value and the second sharedtorque value, and determining, by executing an instruction with theprocessor, a first torque adjustment associated with the first motorbased on the torque error.

An example apparatus includes a processor system and a memorycommunicatively coupled to the processor system, the memory includesinstructions stored thereon that enable the processor system tocalculate a first torque value based on first phase currents of a firstmotor that is driving a shaft connected to a control surface, calculatea second torque value based on second phase currents of a second motorthat is driving the same shaft, determine a first shared torque valuebased on the first calculated torque value and a first sharing factor,determine a second shared torque value based on the second calculatedtorque value and a second sharing factor, determine a torque error basedon the first shared torque value and the second shared torque value, anddetermine a first torque adjustment associated with the first motorbased on the torque error.

An example tangible machine-readable storage medium has instructionsstored thereon that, when executed, cause a machine to at leastcalculate a first torque value based on first phase currents of a firstmotor that is driving a shaft connected to a control surface, calculatea second torque value based on second phase currents of a second motorthat is driving the same shaft, determine first shared torque valuebased on the first calculated torque value and a first sharing factor,determine a second shared torque value based on the second calculatedtorque value and a second sharing factor, determine a torque error basedon the first shared torque value and the second shared torque value, anddetermine a first torque adjustment associated with the first motorbased on the torque error.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example control system within which theteachings of this disclosure may be implemented.

FIG. 2 is a block diagram of an example implementation of an examplemotor controller of FIG. 1.

FIG. 3 is a block diagram of an example implementation of an examplesystem controller of FIG. 1.

FIG. 4 is a flowchart representative of example methods that may beexecuted by the example system controller of FIGS. 1 and/or 3 to performtorque balance control.

FIG. 5 is a flowchart representative of example methods that may beexecuted by the example torque balancing engine of FIGS. 1 and/or 3 todetermine torque adjustment values.

FIG. 6 is a block diagram of an example processing platform structuredto execute machine-readable instructions to implement the methods ofFIGS. 4 and/or 5 and/or the example system controller of FIGS. 1 and/or3.

Wherever possible, the same reference numbers will be used throughoutthe drawing(s) and accompanying written description to refer to the sameor like parts.

As used herein, the prefix “first,” “second,” etc. are used as labels toassist in differentiating the corresponding components. The labels arenot intended to imply an order of events (e.g., a sequence), unlessspecified.

DETAILED DESCRIPTION

Examples disclosed herein facilitate correcting for torque imbalancebetween co-shafted motors connected to a common control surface. Torqueimbalance may occur when, for example, a first motor of the co-shaftedmotors is applying a first torque to the common control surface and asecond motor of the co-shafted motors is applying a second torque, thatis different than the first torque, to the common control surface. Insuch instances (e.g., where torque imbalance occurs), damage may be doneto the control surface and/or the motors. Additionally, power loss mayoccur due to one motor having to overcome the torque load of the othermotor.

Disclosed examples include a torque balancing engine to correct fortorque imbalance between co-shafted motors. For example, disclosedexamples include determining a first percentage of a torque load appliedby the first motor and a second percentage of the torque load applied bythe second motor. In some examples, the torque balancing engine comparesthe torques applied by the two motors and determines if a torque errorexists (e.g., a torque imbalance occurs). If a torque error is detected,the example torque balancing engine determines torque adjustments toapply to each respective torque load to correct for the torqueimbalance.

FIG. 1 is a block diagram of an example control system 100 to control anexample control surface 105. The example control surface 105 of FIG. 1is a flight control surface (e.g., a landing gear, a door, etc.) that isconnected to a rotating shaft 110. However, other types of controlsurfaces may additionally or alternatively be used. In the illustratedexample of FIG. 1, the shaft 110 is driven by two motors 115, 116. Theexample shaft 110 translates rotational movement of the motors 115, 116to linear motion that controls the example control surface 105. Forexample, the shaft 110 may be coupled to the control surface 105 via aball screw or a rack and pinion. However, other techniques for movingthe control surface 105 may additionally or alternatively be used.

In the illustrated example, the first motor 115 and the second motor 116are permanent magnet synchronous machines (PMSMs). However, in otherimplementations, the first motor 115 and/or the second motor 116 may beimplemented using any suitable type of motor such as an AC motor, avariable frequency motor, a DC motor, a stepper motor, a servo motor,etc.

In the illustrated example of FIG. 1, the example control system 100includes a system controller 120 to control the torque of the firstmotor 115 and the second motor 116. The example system controller 120 ofFIG. 1 is communicatively coupled to a first motor controller 125 tocontrol the torque of the first motor 115 and to a second motorcontroller 126 to control the torque of the second motor 116. Theexample motor controllers 125, 126 are also coupled to a power supplybus 130 to receive power for controlling the torque of the correspondingmotors 115, 116.

In the illustrated example, the shaft 110 is coupled to a linearposition sensor 132. The example linear position sensor 132 measures alinear position (X_(lin)) 133 of the shaft 110. The linear positionsensor 132 of FIG. 1 provides the measured linear position (X_(lin)) 133to the system controller 120. However, in some implementations, thecontrol system 100 may not include the linear position sensor 132. Forexample, the system controller 120 may estimate the linear position ofthe shaft 110 based on, for example, a rotational position of the motors115, 116.

In the illustrated example of FIG. 1, the system controller 120 includesan example torque balancing engine 135 to control torque imbalancebetween the co-shafted motors 115, 116 connected to the common controlsurface 105 via the shaft 110. As discussed in greater detail below, thetorque balancing engine 135 processes torque readings from the motors115, 116 and determines respective torque adjustment values to apply tocorresponding target torque values.

During operation, the example system controller 120 periodically samplesthe components of the example control system 100. For example, thesystem controller 120 may poll the linear position sensor 132 for themeasured linear position (X_(lin)) 113 of the shaft 110. The examplecontrol system 120 also receives a target linear position (X_(lin)*) 134via an example communication bus 140. The example target linear position(X_(lin)*) 134 corresponds to a target linear position of the shaft 110.The system controller 120 compares the target linear position (X_(lin)*)134 to a determined linear position (X_(lin) ^(˜)) (e.g., the measuredlinear position (X_(lin)) 133 and/or an estimated linear position) ofthe shaft 110 and determines target torque values (T_(target)) toprovide to the respective motor controllers 125, 126. The example torquebalancing engine 135 obtains calculated torque values (T_(calculated))from the respective motors 115, 116 and determines respective torqueadjustment values (T_(adj)) to apply to the corresponding target torquevalues (T_(target)). The example system controller 120 of FIG. 1 thenprovides the adjusted target torque values (T_(e)*) (sometimes referredto herein as “torque command values” or “torque reference values”) tothe respective motor controllers 125, 126 to control the torques of thecorresponding motors 115, 116.

In the illustrated example, including the torque balancing engine 135 inthe example control system 100 enables mitigating torque discrepanciesfound in systems operating co-shafted motors. For example, the torquebalancing engine 135 of FIG. 1 enables preventing damage to the controlsurface 105 and/or the motors 115, 116 due to, for example, torquemismatch. The example torque balancing engine 135 of FIG. 1 alsoincreases the efficiency of the control system 100 as a whole byreducing power loss from, for example, the first motor 115 having toovercome the second motor 116.

FIG. 2 is a block diagram of an example motor controller 200. Theexample motor controller 200 of FIG. 2 may be used to implement theexample motor controllers 125, 126 of FIG. 1. The operation of the motorcontroller 200 of FIG. 2 is well-known and not described in detail herefor brevity. The example motor controller 200 includes an example vectorcontroller 205 and an example rotor speed estimator 210 in communicationwith an example motor 215. The example motor 215 of FIG. 2 may be usedto implement the example motors 115, 116 of FIG. 1.

In the illustrated example of FIG. 2, the vector controller 205 receivesas input a torque command value (T_(e)*) 250 that specifies the torqueto be provided by the respective motor 215 connected to thecorresponding motor controller 200. As described below in connectionwith FIG. 3, the torque command value (T_(e)*) 250 is provided by thesystem controller 120 of FIG. 1. The vector controller 205 processes thetorque command value (T_(e)*) 250 and outputs pulse-width modulation(PWM) signals. In the illustrated example, the PWM signals drive aninverter, which provides phase currents to the motor 215. The phasecurrents are also used by the example vector controller 205 to calculatea torque value (T_(calculated)) 255. The calculated torque value(T_(calculated)) 255 represents the torque being provided by the motor215. In some implementations, the motor controller 200 may include asensor (or sensors) to measure the torque and/or speed being provided bythe motor 215. For example, a torque sensor may be implemented usingrotary strain gauges, torque transducers, rotary torque sensors, torquemeters, etc. A speed sensor may be implemented using an encoder, a halleffect sensor, etc.

In the illustrated example of FIG. 2, the rotor speed estimator 210estimates a rotor speed (w_(r) ^(^)) 260 of the motor 215. In otherexamples, the rotor speed and/or an angular position of the shaft 110may be measured using additional or alternate techniques such as asensor. The estimated rotor speed (w_(r) ^(^)) 260 is used by theexample system controller 120 to determine the target torque values(T_(target)) to provide to the corresponding motor controller 200.

FIG. 3 is a block diagram of an example implementation of the systemcontroller 120 of FIG. 1. The example system controller 120 generates afirst torque command value (T_(e) _(_) ₁*) 250 a to provide to the firstmotor controller 125 of FIG. 1 and a second torque command value (T_(e)_(_) ₂*) 250 b to provide to the second motor controller 126 of FIG. 1.The example system controller 120 of FIG. 3 includes an example linearposition handler 305, an example linear position controller 325, anexample target torque controller 330 and the example torque balancingengine 135 of FIG. 1.

In the illustrated example of FIG. 3, the example system controller 120includes the linear position handler 305 to provide a determined linearposition (X_(lin) ^(˜)) 322 of the shaft 110. In some examples, thelinear position handler 305 uses the measured linear position (X_(lin))133 provided by the linear position sensor 132 to generate thedetermined linear position (X_(lin) ^(˜)) 322. In some such instances,the example linear position handler 305 may include a signal conditioner310 to process the measured linear position (X_(lin)) 133.

In some examples, the linear position handler 305 estimates a linearposition (X_(lin) ^(^)) 316 based on an estimated rotational speedvalue. For example, the linear position handler 305 may obtain theestimated rotational speed value (w_(r) ^(^)) 260 from the example rotorspeed estimator 210. The example linear position handler 305 providesthe estimated rotational speed value (w_(r) ^(^)) 260 to an examplelinear position estimator 315 to estimate the linear position (X_(lin)^(^)) 316 of the shaft 110. In the illustrated example of FIG. 3, thelinear position estimator 315 includes a proportional-integrator toestimate the linear position (X_(lin) ^(^)) 316. However, othertechniques for estimating the linear position (X_(lin) ^(^)) 316 mayadditionally or alternatively be used.

In the illustrated example of FIG. 3, the example linear positionhandler 305 includes an example switch 320 to output the determinedlinear position (X_(lin) ^(˜)) 322. For example, the example switch 320may receive the measured linear position (X_(lin)) 133 and/or theestimated linear position (X_(lin) ^(^)) 316 and select one of thelinear position values. In some examples, if the switch 320 receives ameasured linear position (X_(lin)) 133, the switch 320 uses the measuredlinear position (X_(lin)) 133 as the determined linear position (X_(lin)^(˜)) 322. In other instances where the switch 320 does not receive ameasured linear position (X_(lin)) 133, the example switch 320 uses theestimated linear position (X_(lin)) 133 as the determined linearposition (X_(lin) ^(˜)) 322.

In the illustrated example of FIG. 3, the example system controller 120includes the linear position controller 325 to generate a targetrotational speed (w_(r)*) 360 based on linear position information. Inthe illustrated example of FIG. 3, the linear position controller 325 isimplemented by a proportional-integral (PI) controller. The examplelinear position controller 305 obtains the target linear position(X_(lin)*) 134 via the communication bus 140 of FIG. 1 and obtains thedetermined linear position (X_(lin) ^(˜)) 322 of the shaft 110 from thelinear position handler 305. In the illustrated example, the linearposition controller 325 compares the target linear position (X_(lin)*)134 to the determined linear position (X_(lin) ^(˜)) 322 and generatesthe target rotational speed (w_(r)*) 360.

In the illustrated example of FIG. 3, the example system controller 120includes the example target torque controller 330 to generate targettorque values based on rotational speed information. In the illustratedexample of FIG. 3, the target torque controller 330 is implemented by aproportional-integral (PI) controller. In the illustrated example, thetarget torque controller 330 obtains the target rotational speed(w_(r)*) 360 from the linear position controller 325. The example targettorque controller 310 also obtains the estimated rotational speed values(w_(r) ^(^)) 260 from the motor controller 200 of FIG. 2. For example,the target torque controller 330 may obtain a first estimated rotationalspeed value (w_(r) _(_) ₁ ^(^)) 260 a from the first motor controller125 and may obtain a second estimated rotational speed value (w_(r) _(_)₂ ^(^)) 260 b from the second motor controller 126. In the illustratedexample, the rotational speed values (w_(r) _(_) ₁ ^(^)) 260 a, (w_(r)_(_) ₂ ^(^)) 260 b obtained from the respective motor controllers 125,126 are estimated values. However, other techniques for obtaining therotational speed values (w_(r) _(_) ₁ ^(^)) 260 a, (w_(r) _(_) ₂ ^(^))260 b of the corresponding motors 115, 116 may additionally oralternatively be used. For example, the rotational speed values (w_(r)_(_) ₁ ^(^)) 260 a, (w_(r) _(_) ₂ ^(^)) 260 b may be obtained viasensors coupled to the motors 115, 116 and/or the motor controllers 125,126.

The example target torque controller 330 of FIG. 3 compares therespective estimated rotational speed values (w_(r) ^(^)) 260 to thetarget rotational speed (w_(r)*) 360 from the linear position controller325 to determine target torque values 365 for the corresponding motors.For example, the target torque controller 330 may compare the firstestimated rotational speed value (w_(r) _(_) ₁ ^(^)) 260 a to the targetrotational speed (w_(r)*) 360 and generate a first target torque value(T_(target) _(_) ₁) 365 a for the first motor 115. The example targettorque controller 310 compares the second estimated rotational speedvalue (w_(r) _(_) ₂ ^(^)) 260 b to the target rotational speed (w_(r)*)360 and generates a second target torque value (T_(target) _(_) ₂) 365 bfor the second motor 116. In some examples, the first and secondestimated rotational speed values (w_(r) _(_) ₁ ^(^)) 260 a, (w_(r) _(_)₂ ^(^)) 260 b may be the same value because they are associated withco-shafted motors.

As discussed above, in some instances, the torque being applied byco-shafted motors (e.g., the first motor 115 and the second motor 116 ofFIG. 1) may result in a torque imbalance being applied to the shaft.Referring to the example control system 100 of FIG. 1, torque imbalancemay result in damage to the example shaft 110 being driven by the motors115, 116, the example control surface 105 being controlled by the shaft110 and/or one or both of the motors 115, 116. Additionally oralternatively, the torque imbalance may result in inefficient powerconsumption by the control system 100 as, for example, the first motor115 may have to overcome the load of the second motor 116.

To correct potential torque imbalance, the example system controller 120of FIG. 3 includes the torque balancing engine 135. In the illustratedexample of FIG. 3, the torque balancing engine 135 includes an exampletorque sharing factor handler 335, an example sharing scaler 340, anexample comparator 345, an example torque adjustment calculator 350 andan example torque adjuster 355.

In the illustrated example of FIG. 3, the example torque balancingengine 135 includes the torque sharing factor handler 335 to provide afirst sharing factor (a) 336 corresponding to the first motor 115 and asecond sharing factor (b) 337 corresponding to the second motor 116. Inthe illustrated example of FIG. 3, the sharing factors (a) 336, (b) 337represent a share (e.g., a percentage) of the torque load each motor115, 116 contributes. The sharing factors (a) 336, (b) 337 are used bythe example sharing scaler 340 to determine shared torque values 370 a,370 b. In the illustrated example of FIG. 3, the torque sharing factorhandler 335 generates the sharing factors (a) 336, (b) 337 based on asystem input 334. In some examples, the system input 334 is user input.For example, a user may provide, via a user interface, values for thesharing factors (a) 336, (b) 337. In some examples, the system input 334is system information. For example, the system input 334 may includeinformation corresponding to the sizes of the respective motors 115,116. In some such examples, the torque sharing factor handler 335 maygenerate the sharing factors (a) 336, (b) 337 based on the respectivesizes of the first motor 115 and the second motor 116. In general, ifthe first motor 115 and the second motor 116 are providing the sameoutput, the sharing factors (a) 336, (b) 337 may be represented as aone-to-one ratio (e.g., 1:1). However, other techniques for generatingthe sharing factors (a) 336, (b) 337 may additionally or alternativelybe used.

In the illustrated example of FIG. 3, the example torque balancingengine 135 includes the sharing scaler 340 to scale an input by asharing factor. In the illustrated example, the sharing scaler 340obtains the example calculated torque value (T calculated) 255 from theexample vector controller 205 of the motor controller 200 and obtainsthe sharing factors (a) 336, (b) 337 from the example torque sharingfactor handler 335. The example sharing scaler 340 then multiplies (1)the calculated torque value (T_(calculated)) 255 for a correspondingmotor and (2) the sharing factor for the corresponding motor todetermine a shared torque value. In the illustrated example, the sharedtorque value represents a portion of the torque being applied by thecorresponding motor. For example, the sharing scaler 340 scales (1) afirst calculated torque value (T_(calculated) _(_) ₁) 255 a from thefirst motor controller 115 by (2) the first sharing factor (a) 336 todetermine a first shared torque value 370 a. Similarly, the examplesharing scaler 340 scales (1) a second calculated torque value(T_(calculated) _(_) ₂) 255 b obtained from the second motor controller116 by (2) the second sharing factor (b) 337 to determine a secondshared torque value 370 b.

In the illustrated example of FIG. 3, the example torque balancingengine 135 includes the example comparator 345 to determine which, ifany, motor is providing extra torque that may result in a torqueimbalance. For example, the comparator 345 compares the first sharedtorque value 370 a to the second shared torque value 370 b anddetermines which shared torque value is greater. The example comparator345 of FIG. 3 provides the output of the comparison to the exampletorque adjustment calculator 350. In some examples, the comparator 345outputs a positive (+) indicator, a negative (−) indicator or a nodifference (0) indicator to the torque adjustment calculator 350. Forexample, if the first shared torque value 370 a is greater than thesecond shared torque value 370 b, the comparator 345 may output apositive indicator to the torque adjustment calculator 350. In someexamples, the comparator 345 may provide the torque adjustmentcalculator 350 a value representative of the difference between the twoshared torque values 370 a, 370 b (e.g., a torque error). For example,if the first shared torque value 370 a is one newton-meter (1 N-m) lessthan the second shared torque value 370 b, the comparator 345 mayprovide the torque adjustment calculator 350 an output representative ofthe difference (e.g., a torque error of negative one newton-meter (−1N-m)).

In the illustrated example of FIG. 3, the example torque balancingengine 135 includes the example torque adjustment calculator 350 todetermine a torque adjustment to apply to the respective target torquevalues (T_(target)) 365 to offset the torque imbalance (e.g., correctfor the torque error). For example, in response to an indicator from thecomparator 345 that the second shared torque value 370 b is greater thanthe first shared torque value 370 a, the example torque adjustmentcalculator 350 may calculate a first torque adjustment (T_(adj) _(_) ₁)375 a to modify the first target torque value (T_(target) _(_) ₁) 365 a(e.g., increase the first target torque value 365 a by one newton-meter(1 N-m)). In some such examples, the torque adjustment calculator 350may set a second torque adjustment (T_(adj) _(_) ₂) 375 b to zero. Insome examples, the torque adjustment calculator 350 may calculate asecond torque adjustment (T_(adj) _(_) ₂) 375 b to modify the secondtarget torque value (T_(target) _(_) ₂) 365 b (e.g., decrease the secondtarget torque value 365 b by one newton-meter (−1 N-m)). In some suchexamples, the torque adjustment calculator 350 may set a first torqueadjustment (T_(adj) _(_) ₁) 375 a to zero. In other examples, the torqueadjustment calculator 325 may calculate a first torque adjustment(T_(adj) _(_) ₁) 375 a to apply to the first target torque value(T_(target) _(_) ₁) 365 a and a second torque adjustment (T_(adj) _(_)₂) 375 b to apply to the second target torque value (T_(target) _(_) ₂)365 b (e.g., increase the first target torque value 365 a by one-halfnewton-meter (½ N-m) and decrease the second target torque value 365 bby one-half newton-meter (−½ N-m)). However, other techniques forcalculating the first torque adjustment (T_(adj) _(_) ₁) 375 a and/orthe second torque adjustment (T_(adj) _(_) ₂) 375 b to apply to thetarget torque values (T_(target)) 365 may additionally or alternativelybe used. In some examples, the torque adjustment calculator 350 may beimplemented by a proportional integral controller.

In the illustrated example of FIG. 3, the example torque balancingengine 135 includes the example torque adjuster 355 to determine thetorque command values (T_(e)*) 250 to provide to the corresponding motorcontrollers 125, 126. The example torque adjuster 355 of FIG. 3 modifiesthe respective target torque values (T_(target)) 365 with thecorresponding torque adjustments (T_(adj)) 375. For example, the torqueadjuster 355 may determine a first adjusted target torque value (T_(e)_(_) ₁*) 250 a by adding the first torque adjustment (T_(adj) _(_) ₁)375 a to the first target torque value (T_(target) _(_) ₁) 365 a and maydetermine a second adjusted target torque value (T_(e) _(_) ₂*) 250 b byadding the second torque adjustment (T_(adj) _(_) ₂) 375 b to the secondtarget torque value (T_(target) _(_) ₂) 365 b. However, other techniquesfor modifying the target torque values (T_(target)) 365 with the torqueadjustments (T_(adj)) 375 may additionally or alternatively be used. Theexample torque adjuster 355 of FIG. 3 provides the adjusted targettorque values (e.g., the example torque command values (T_(e) _(_) ₁*)250 a, (T_(e) _(_) ₂*) 250 b) to the respective motor controllers 125,126 to apply to the corresponding motors 115, 116.

While an example manner of implementing the system controller 120 ofFIG. 1 is illustrated in FIG. 3, one or more of the elements, processesand/or devices illustrated in FIG. 3 may be combined, divided,re-arranged, omitted, eliminated and/or implemented in any other way.Further, the example torque balancing engine 135, the example linearposition handler 305, the example signal conditioner 310, the examplelinear position estimator 315, the example switch 320, the examplelinear position controller 325, the example target torque controller330, the example torque sharing factor handler 335, the example sharingscaler 340, the example comparator 345, the example torque adjustmentcalculator 350, the example torque adjuster 355 and/or, more generally,the example system controller 120 of FIG. 3 may be implemented byhardware, software, firmware and/or any combination of hardware,software and/or firmware. Thus, for example, any of the example torquebalancing engine 135, the example linear position handler 305, theexample signal conditioner 310, the example linear position estimator315, the example switch 320, the example linear position controller 325,the example target torque controller 330, the example torque sharingfactor handler 335, the example sharing scaler 340, the examplecomparator 345, the example torque adjustment calculator 350, theexample torque adjuster 355 and/or, more generally, the example systemcontroller 120 of FIG. 3 could be implemented by one or more analog ordigital circuit(s), logic circuits, programmable processor(s),application specific integrated circuit(s) (ASIC(s)), programmable logicdevice(s) (PLD(s)) and/or field programmable logic device(s) (FPLD(s)).When reading any of the apparatus or system claims of this patent tocover a purely software and/or firmware implementation, at least one ofthe example torque balancing engine 135, the example linear positionhandler 305, the example signal conditioner 310, the example linearposition estimator 315, the example switch 320, the example linearposition controller 325, the example target torque controller 330, theexample torque sharing factor handler 335, the example sharing scaler340, the example comparator 345, the example torque adjustmentcalculator 350, the example torque adjuster 355 and/or, more generally,the example system controller 120 of FIG. 3 is/are hereby expresslydefined to include a tangible computer readable storage device orstorage disk such as a memory, a digital versatile disk (DVD), a compactdisk (CD), a Blu-ray disk, etc. storing the software and/or firmware.Further still, the example system controller 120 of FIG. 3 may includeone or more elements, processes and/or devices in addition to, orinstead of, those illustrated in FIG. 3, and/or may include more thanone of any or all of the illustrated elements, processes and devices.

Flowcharts representative of example methods for implementing theexample system controller 120 of FIGS. 1 and/or 3 and/or the exampletorque balancing engine 135 of FIGS. 1 and/or 3 are shown in FIGS. 4 and5. In these examples, the methods may be implemented using machinereadable instructions comprise a program for execution by a processorsuch as the processor 612 shown in the example processor platform 600discussed below in connection with FIG. 6. The program(s) may beembodied in software stored on a tangible computer readable storagemedium such as a CD-ROM, a floppy disk, a hard drive, a digitalversatile disk (DVD), a Blu-ray disk, or a memory associated with theprocessor 612, but the entire program(s) and/or parts thereof couldalternatively be executed by a device other than the processor 612and/or embodied in firmware or dedicated hardware. Further, although theexample program(s) is/are described with reference to the flowchartsillustrated in FIGS. 4 and 5, many other methods of implementing theexample system controller 120 may alternatively be used. For example,the order of execution of the blocks may be changed, and/or some of theblocks described may be changed, eliminated, or combined.

As mentioned above, the example methods of FIGS. 4 and/or 5 may beimplemented using coded instructions (e.g., computer and/or machinereadable instructions) stored on a tangible computer readable storagemedium such as a hard disk drive, a flash memory, a read-only memory(ROM), a compact disk (CD), a digital versatile disk (DVD), a cache, arandom-access memory (RAM) and/or any other storage device or storagedisk in which information is stored for any duration (e.g., for extendedtime periods, permanently, for brief instances, for temporarilybuffering, and/or for caching of the information). As used herein, theterm tangible computer readable storage medium is expressly defined toinclude any type of computer readable storage device and/or storage diskand to exclude propagating signals and to exclude transmission media. Asused herein, “tangible computer readable storage medium” and “tangiblemachine readable storage medium” are used interchangeably. Additionallyor alternatively, the example processes of FIGS. 4 and/or 5 may beimplemented using coded instructions (e.g., computer and/or machinereadable instructions) stored on a non-transitory computer and/ormachine readable medium such as a hard disk drive, a flash memory, aread-only memory, a compact disk, a digital versatile disk, a cache, arandom-access memory and/or any other storage device or storage disk inwhich information is stored for any duration (e.g., for extended timeperiods, permanently, for brief instances, for temporarily buffering,and/or for caching of the information). As used herein, the termnon-transitory computer readable medium is expressly defined to includeany type of computer readable storage device and/or storage disk and toexclude propagating signals and to exclude transmission media. As usedherein, when the phrase “at least” is used as the transition term in apreamble of a claim, it is open-ended in the same manner as the term“comprising” is open ended. Comprising and all other variants of“comprise” are expressly defined to be open-ended terms. Including andall other variants of “include” are also defined to be open-ended terms.In contrast, the term “consisting” and/or other forms of “consist” aredefined to be close-ended terms.

FIG. 4 is a flowchart representative of an example method 400 that maybe executed to implement the example system controller 120 of FIGS. 1and/or 3 to perform torque balance control of co-shafted motors. Theexample method 400 of FIG. 4 begins at block 402 when the example systemcontroller 120 obtains control system information. For example, thesystem controller 120 may sample its inputs to obtain up-to-date valuesof linear position information (e.g., the measured linear position(X_(lin)) 133 and/or the estimated linear position (X_(lin) ^(^)) 316)associated with the shaft 110 (FIG. 1), estimated rotational speeds (w′)260 and calculated torque values (T_(calculated)) 255. For example, thelinear position controller 325 (FIG. 3) may obtain the target linearposition (X_(lin)*) 134 for the shaft 110 via the communication bus 140of FIG. 1 and may obtain the determined linear position value (X_(lin)^(˜)) 322 of the shaft 110 from the linear position handler 305 (FIG.3). At block 404, the example system controller 120 determines thetarget rotational speed (w_(r)*) 360 for the shaft 110. For example, thelinear position controller 325 may generate the rotational speed command(w_(r)*) 360 based on the target linear position (X_(lin)*) 134 and thedetermined linear position (X_(lin) ^(˜)) 322.

At block 406, the example system controller 120 determines the targettorque values for the respective motors 115, 116 of FIG. 1. For example,the target torque controller 330 (FIG. 3) may generate the first targettorque value (T_(target) _(_) ₁) 365 a based on the first estimatedrotational speed value (w_(r) _(_) ₁ ^(^)) 260 a from the first motorcontroller 125 and the target rotational speed (w_(r)*) 360. The exampletarget torque controller 310 also generates the second target torquevalue (T_(target) _(_) ₂) 365 b based on the second estimated rotationalspeed value (w_(r) _(_) ₂ ^(^)) 260 b from the second motor controller125 and the target rotational speed (w_(r)*) 360.

At block 408, the example system controller 120 determines one or moretorque adjustment(s). For example, the example torque balancing engine135 (FIGS. 1 and/or 3) may compare a portion of the first calculatedtorque value (T_(calculated) _(_) ₁) 255 a to a portion of the secondcalculated torque value (T_(calculated) _(_) ₂) 255 b and determine atorque adjustment (T_(adj)) 375 to apply a target torque value(T_(target)) 365. In some examples, the torque balancing engine 135 maydetermine the first torque adjustment (T_(adj) _(_) ₁) 375 a to apply tothe first target torque value (T_(target) _(_) ₁) 365 a and/or maydetermine the second torque adjustment (T_(adj) _(_) ₂) 375 b to applyto the second target torque value (T_(target) _(_) ₂) 365 b.

At block 410, the example system controller 120 determines thecorresponding torque command values (T_(e)*) 250 to provide to therespective motor controllers 125, 126. For example, the example torqueadjuster 355 (FIG. 3) may modify the first target torque value(T_(target) _(_) ₁) 365 a by the first torque adjustment (T_(adj) _(_)₁) 375 a to determine the first torque command value (T_(e) _(_) ₁*) 250a to provide to the first motor controller 125. The example torqueadjuster 355 may modify the second target torque value (T_(target) _(_)₂) 365 b by the second torque adjustment (T_(adj) _(_) ₂) 375 b todetermine the second torque command value (T_(e) _(_) ₂*) 250 b.

At block 412, the example system controller 120 applies the torquecommand values (T_(e) _(_) ₁*) 250 a, (T_(e) _(_) ₂*) 250 b to themotors 115, 116. For example, the torque adjuster 355 may provide thefirst torque command value (T_(e) _(_) ₁*) 250 a to the first motorcontroller 125 and may provide the second torque command value (T_(e)_(_) ₂*) 250 b to the second motor controller 126. The example method400 of FIG. 4 then ends. Additionally or alternatively, the examplemethod 400 of FIG. 4 may run continuously and, thus, control may returnto block 402 to obtain the control system information by polling thecomponents of the control system 100.

FIG. 5 is a flowchart representative of an example method 500 that maybe executed to implement the example torque balancing engine 135 ofFIGS. 1 and/or 3 to determine one or more torque adjustment(s). Theexample method 500 of FIG. 5 begins at block 502 when the example torquebalancing engine 135 obtains the calculated torque values(T_(calculated)) 255. For example, the example torque sharing factorhandler 335 (FIG. 3) may output the first sharing factor (a) 336corresponding to the first motor 115 and the second sharing factor (b)337 corresponding to the second motor 116. In some examples, the valuesof the sharing factors (a) 336, (b) 337 is based on the system input334. The example sharing scaler 340 (FIG. 3) obtains the calculatedtorque values (T_(calculated)) 255 from the respective motor controllers125, 126.

At block 504, the example torque balancing engine 135 determines theshared torque values for the respective motors 115, 116. For example,the sharing scaler 340 calculates the first shared torque value 370 a byscaling the first calculated torque value (T_(calculated) _(_) ₁) 255 afrom the first motor controller 125 with the first sharing factor (a)336. The example sharing scaler 340 also calculates the second sharedtorque value 370 b by scaling the second calculated torque value(T_(calculated) _(_) ₂) 255 b from the second motor controller 126 withthe second sharing factor (b) 337. In the illustrated example, thesharing scaler 315 calculates the shared torque values 370 in parallel(e.g., concurrently). However, in other implementations, the sharingscaler 315 may calculate the sharing torque values in a sequentialmanner.

At block 506, the example torque balancing engine 135 determines atorque error based on the shared torque values 370. For example, theexample comparator 345 (FIG. 3) may compare the first shared torquevalue 370 a to the second shared torque value 370 b and determine thedifference in values to be the torque error. At block 508, the exampletorque balancing engine 135 determines the torque adjustments (T_(adj))375 to correct for the torque error and facilitate torque balancecontrol. For example, if the output of the comparator 345 indicates thatthe first motor 115 is applying more torque than the second motor 116,the example torque adjustment calculator 350 (FIG. 3) may calculate thefirst torque adjustment (T_(adj) _(_) ₁) 375 a to modify the firsttarget torque value (T_(target) _(_) ₁) 365 a so that the torque appliedby the first motor 115 matches the torque applied by the second motor116. In some examples, the torque adjustment calculator 350 maycalculate the second torque adjustment (T_(adj) _(_) ₂) 375 b to modifythe second target torque value (T_(target) _(_) ₂) 365 b so that thetorque applied by the second motor 116 matches the torque applied by thefirst motor 115. In some examples, the torque adjustment calculator 350may calculate the first torque adjustment (T_(adj) _(_) ₁) 375 a and thesecond torque adjustment (T_(adj) _(_) ₂) 375 b to modify the firsttarget torque value (T_(target) _(_) ₁) 365 a and the second targettorque value (T_(target) _(_) ₂) 365 b, respectively. The example method500 of FIG. 5 then ends. Additionally or alternatively, the examplemethod 500 of FIG. 5 may run continuously and, thus, control may returnto block 502 to determine the first shared torque value 370 a.

FIG. 6 is a block diagram of an example processor platform 600 capableof executing instructions to implement the methods of FIGS. 4 and/or 5and the system controller 120 of FIGS. 1 and/or 3. The processorplatform 600 can be, for example, a server, a personal computer, or anyother type of computing device.

The processor platform 600 of the illustrated example includes aprocessor 612. The processor 612 of the illustrated example is hardware.For example, the processor 612 can be implemented by one or moreintegrated circuits, logic circuits, microprocessors or controllers fromany desired family or manufacturer.

The processor 612 of the illustrated example includes a local memory 613(e.g., a cache). The processor 612 of the illustrated example executesthe instructions to implement the example torque balancing engine 135,the example linear position handler 305, the example signal conditioner310, the example linear position estimator 315, the example switch 320,the example linear position controller 325, the example target torquecontroller 330, the example torque sharing factor handler 335, theexample sharing scaler 340, the example comparator 345, the exampletorque adjustment calculator 350 and the example torque adjuster 355.The processor 612 of the illustrated example is in communication with amain memory including a volatile memory 614 and a non-volatile memory616 via a bus 618. The volatile memory 614 may be implemented bySynchronous Dynamic Random Access Memory (SDRAM), Dynamic Random AccessMemory (DRAM), RAMBUS Dynamic Random Access Memory (RDRAM) and/or anyother type of random access memory device. The non-volatile memory 616may be implemented by flash memory and/or any other desired type ofmemory device. Access to the main memory 614, 616 is controlled by amemory controller.

The processor platform 600 of the illustrated example also includes aninterface circuit 620. The interface circuit 620 may be implemented byany type of interface standard, such as an Ethernet interface, auniversal serial bus (USB), and/or a PCI express interface.

In the illustrated example, one or more input devices 622 are connectedto the interface circuit 620. The input device(s) 622 permit(s) a userto enter data and commands into the processor 612. The input device(s)can be implemented by, for example, an audio sensor, a microphone, acamera (still or video), a keyboard, a button, a mouse, a touchscreen, atrack-pad, a trackball, isopoint and/or a voice recognition system.

One or more output devices 624 are also connected to the interfacecircuit 620 of the illustrated example. The output devices 624 can beimplemented, for example, by display devices (e.g., a light emittingdiode (LED), an organic light emitting diode (OLED), a liquid crystaldisplay, a cathode ray tube display (CRT), a touchscreen, a tactileoutput device, a printer and/or speakers). The interface circuit 620 ofthe illustrated example, thus, typically includes a graphics drivercard, a graphics driver chip or a graphics driver processor.

The interface circuit 620 of the illustrated example also includes acommunication device such as a transmitter, a receiver, a transceiver, amodem and/or network interface card to facilitate exchange of data withexternal machines (e.g., computing devices of any kind) via a network626 (e.g., an Ethernet connection, a digital subscriber line (DSL), atelephone line, coaxial cable, a cellular telephone system, etc.).

The processor platform 600 of the illustrated example also includes oneor more mass storage devices 628 for storing software and/or data.Examples of such mass storage devices 628 include floppy disk drives,hard drive disks, compact disk drives, Blu-ray disk drives, RAIDsystems, and digital versatile disk (DVD) drives.

Coded instructions 632 to implement the methods of FIGS. 4 and/or 5 maybe stored in the mass storage device 628, in the volatile memory 614, inthe non-volatile memory 616, and/or on a removable tangible computerreadable storage medium such as a CD or DVD.

From the foregoing, it will be appreciated that the above disclosedmethods, apparatus and articles of manufacture facilitate torque balancecontrol of co-shafted motors. For example, disclosed examples maydetermine torque adjustment values to modify target torque values ofeach of the co-shafted motors. By applying the torque adjustments to thetarget torque values, disclosed examples prevent damage to the controlsurface and the motors. Additionally, the disclosed examples enableincreased efficiency of the control system by reducing power loss fromone motor having to overcome the other motor.

Although certain example methods, apparatus and articles of manufacturehave been disclosed herein, the scope of coverage of this patent is notlimited thereto. On the contrary, this patent covers all methods,apparatus and articles of manufacture fairly falling within the scope ofthe claims of this patent.

What is claimed is:
 1. A method comprising: measuring, by a linearposition sensor, a linear position of a shaft connected to anaerodynamic control surface; calculating, by executing an instructionwith a processor, a first torque value based on first phase currents ofa first motor that is directly coupled to the shaft; calculating, byexecuting an instruction with the processor, a second torque value basedon second phase currents of a second motor co-shafted onto the shaftwith the first motor; determining, by executing an instruction with theprocessor, a target linear position of the shaft based on the measuredlinear position; determining, by executing an instruction with theprocessor, a first shared torque value based on the first calculatedtorque value and a first sharing factor associated with the first motor;determining, by executing an instruction with the processor, a secondshared torque value based on the second calculated torque value and asecond sharing factor associated with the second motor; determining, byexecuting an instruction with the processor, a torque error based on thefirst shared torque value and the second shared torque value;determining, by executing an instruction with the processor, a firsttorque adjustment associated with the first motor based on the torqueerror and the target linear position; determining a second torqueadjustment associated with the second motor based on the torque errorand the target linear position; adjusting a first torque applied to theshaft from the first motor based on the determined first torqueadjustment; and adjusting a second torque applied to the shaft from thesecond motor based on the determined second torque adjustment.
 2. Amethod of claim 1, further including: calculating a target rotationalspeed based on linear position information associated with the shaft;and determining a first target torque value associated with the firstmotor based on the target rotational speed and a first rotational speedassociated with the first motor.
 3. A method of claim 2, wherein thelinear position information includes the target linear position and anestimated linear position of the shaft based on the first rotationalspeed.
 4. A method of claim 2, wherein the linear position informationincludes the target linear position and the measured linear position ofthe shaft.
 5. A method of claim 2, further including modifying the firsttarget torque value based on the first torque adjustment.
 6. A method ofclaim 1, wherein the first sharing factor represents a first percentageof torque generated by the first motor and the second sharing factorrepresents a second percentage of torque generated by the second motor.7. An apparatus comprising: a processor system; a sensor to measure alinear position of a shaft connected to an aerodynamic control surface;and a memory communicatively coupled to the processor system, the memoryincluding stored instructions that enable the processor system to:calculate a first torque value based on first phase currents of a firstmotor that is directly coupled to the shaft; calculate a second torquevalue based on second phase currents of a second motor that isco-shafted onto the shaft with the first motor; determine a targetlinear position of the shaft based on the measured linear position;determine a first shared torque value based on the first calculatedtorque value and a first sharing factor associated with the first motor;determine a second shared torque value based on the second calculatedtorque value and a second sharing factor associated with the secondmotor; determine a torque error based on the first shared torque valueand the second shared torque value; determine a first torque adjustmentassociated with the first motor based on the torque error and thedetermined target linear position; determine a second torque adjustmentassociated with the second motor based on the torque error and thedetermined target linear position; adjust a first torque applied to theshaft by the first motor based on the determined first torqueadjustment; and adjust a second torque applied to the shaft by thesecond motor based on the determined second torque adjustment.
 8. Theapparatus of claim 7, wherein the instructions enable the processorsystem to: calculate a target rotational speed based on linear positioninformation associated with the shaft; and determine a first targettorque value associated with the first motor based on the targetrotational speed and a first rotational speed associated with the firstmotor.
 9. The apparatus of claim 8, wherein the linear positioninformation includes the target linear position and an estimated linearposition of the shaft based on the first rotational speed.
 10. Theapparatus of claim 8, wherein the linear position information includesthe target linear position and the measured linear position of theshaft.
 11. The apparatus of claim 8, wherein the instructions enable theprocessor system to modify the first target torque value based on thefirst torque adjustment.
 12. The apparatus of claim 7, wherein the firstsharing factor represents a first percentage of torque generated by thefirst motor and the second sharing factor represents a second percentageof torque generated by the second motor.
 13. A tangible machine-readablestorage medium comprising instructions that, when executed, cause aprocessor to at least: calculate a first torque value based on firstphase currents of a first motor that is directly coupled to a shaftconnected to an aerodynamic control surface; calculate a second torquevalue based on second phase currents of a second motor that isco-shafted onto the shaft with the first motor; determine a targetlinear position of a shaft based on a measured linear position of theshaft measured by a linear position sensor; determine a first sharedtorque value based on the first calculated torque value and a firstsharing factor associated with the first motor; determine a secondshared torque value based on the second calculated torque value and asecond sharing factor associated with the second motor; determine atorque error based on the first shared torque value and the secondshared torque value; determine a first torque adjustment associated withthe first motor based on the torque error and the determined targetlinear position; determine a second torque adjustment associated withthe second motor based on the torque error and the determined targetlinear position; adjust a first torque applied to the shaft by the firstmotor based on the determined first torque adjustment; and adjust asecond torque applied to the shaft by the second motor based on thedetermined second torque adjustment.
 14. The tangible machine-readablestorage medium of claim 13 comprising instructions that, when executed,cause the machine to at least: determine a target rotational speed basedon linear position information associated with the shaft; and determinea first target torque value associated with the first motor based on thetarget rotational speed and a first rotational speed associated with thefirst motor.
 15. The tangible machine-readable storage medium of claim14 comprising instructions that, when executed, cause the machine to atleast determine the target rotational speed based on a comparison of thetarget linear position and an estimated linear position of the shaft,the estimated linear position based on the first rotational speed. 16.The tangible machine-readable storage medium of claim 14 comprisinginstructions that, when executed, cause the machine to at least modifythe first target torque value based on the first torque adjustment. 17.The tangible machine-readable storage medium of claim 13 comprisinginstructions that, when executed, cause the machine to at least:determine the first sharing factor as a first percentage of torquegenerated by the first motor; and determine the second sharing factor asa second percentage of torque generated by the second motor.
 18. Theapparatus of claim 7, wherein the first and second motors are arrangedin series along a length of the shaft.
 19. The apparatus of claim 7,wherein the first and second motors are not coupled to a transmission ordifferential.